home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / General / SC++ 7.0.2 Update / Release Notes / TCL READ ME < prev    next >
Text File  |  1994-05-18  |  7KB  |  160 lines

  1. TCL 2.0.2 README
  2. ================
  3. Copyright © 1994 Symantec Corporation. All rights reserved.
  4. May 8, 1994
  5. Font: Geneva 12
  6.  
  7. For a multitude of useful information about the new TCL 2.0 that did not make it into the Visual Architect/TCL Guide, please refer to the "Supplementary Info.π" project in the "THINK Class Library 2.0:(Supplementary Info)" folder.  The text files that make up this project include:
  8.  
  9. • a detailed discussion on how to convert existing TCL applications to TCL 2.0.
  10. • an expanded discussion of using the CSaver class.
  11. • descriptions of three classes not documented in the manual:  CEnvirons, CFileElement, and CPictGridDirector.
  12. • descriptions not documented in the manual of the AppleEvent-related member functions for the following classes:  CApplication, CClipboard, CDocument, CSwitchboard, and CWindow.
  13. • documentation on using ResEdit resource templates to initialize CView-derived classes from resources.
  14.  
  15.  
  16. To build your old TCL 1.1.3 projects without converting to TCL 2.0, follow these steps:
  17.  
  18. • Shield the THINK Class Library 2.0, Mac #includes, Standard Libraries, and oops Libraries Folders.
  19. • Copy the THINK Class Library 1.1.3, Mac #includes, Standard Libraries and oops Libraries Folders from the old Development Folder.
  20. • Re-precompile TCLHeaders and TCLHeaders++.
  21.  
  22.  
  23. More On Using new_by_name
  24. -------------------------
  25. If you wish to instantiate classes using new_by_name, you need to override CApplication::ForceClassReferences and add the following line for each class:
  26.  
  27. TCL_FORCE_REFERENCE(myClass);
  28.  
  29. If you forget to do this, you will get a failure in new_by_name when trying to instantiate your class.
  30.  
  31. NOTE:  The override to CApplication::ForceClassReferences and the necessary calls to TCL_FORCE_REFERENCE are automatically generated for classes that you define using Visual Architect. 
  32.  
  33. Fixed in 2.0.2
  34. ==============
  35. • Made definition of AppleEvent in CAppleEventObject::GenericHandler
  36. volatile in order to keep its value in the catch block. 
  37.  
  38. • operator new() now correctly initializes allocated memory to
  39. the value defined by the macro TCL_PRESET_OBJECTS in
  40. TCL #includes.cp.
  41.  
  42. • CFile::ThrowOut() now calls Close() before deleting the file
  43. as it did in 1.1.3.
  44.  
  45. • All references to CPP_TCL except in TCL #includes.cpp removed.
  46.  
  47. • CArray::InsertAtIndex now correctly forces out-of-range indices
  48. into the array and InsertItem now correctly adjusts its argument
  49. index if it is out of range, as documented. Documentation change:
  50. InsertItem takes a long& argument instead of a long.
  51.  
  52. • Overrode SetArrayItem() in CVoidPtrArray and CPtrArray so the
  53. latter now has a type-safe way to change the value of an item.
  54.  
  55. • Dragging windows no longer shows a munged grayrgn after a few
  56. tries.
  57.  
  58. • PutObjectReference() added as a member function of CStream.
  59. The template function didn't use the type T and is obsolete
  60. (though supported until the next major release).
  61. This saves about 100 bytes per streaming root class.
  62.  
  63. • PutObjectReference() no longer incorrectly writes a -1L instead of
  64. a short 0 when an object hasn't already been written.
  65.  
  66. • catch_() no longer destroys the exception before returning a
  67. pointer to it.
  68.  
  69. • CPane's ChangeSize() correctly places the frame when the
  70. top or left is non-zero.
  71.  
  72. • Added HNoPurge to CDLOGDialog::IDLOGDialogX().
  73.  
  74. • FindDlogPosition() checks GetResource.
  75.  
  76. • CStdPopupPane's sMenuProc checks LoadResource.
  77.  
  78. • CDialogDirector::DoModalDialog() calls HiliteMenu(0) in its
  79. exception handler in case exception thrown in Edit menu command.
  80.  
  81. • CDesktop now checks NewPtr().
  82.  
  83. • CClipboard now checks NewHandle(0).
  84.  
  85. • CBartender now calls ResizeHandleCanFail() instead of
  86. SetHandleSize().
  87.  
  88. • CPtrArrayIterators now compile and run correctly. There was a 
  89. problem was an incorrect forward declaration of CPtrArray.
  90.  
  91. • TinyEdit new documents now show blinking cursor.
  92.  
  93. • TCL dependence on '\r' and '\n' removed for PowerPC compatibility.
  94. Added TCL_CR macro defined as 0xD.
  95.  
  96. • It is now possible to compile demos and TCL with TCL_UNSAFE_ALLOCATION
  97. undefined. The TCL no longer crashes after one or two out-of-memory
  98. exceptions. All TCL_AUTO_DESTRUCT_OBJECT allocation in TCL and demos
  99. is now done with TCL_NEW().
  100.  
  101. • Added TCL_FORCE_TEMPLATE_REFERENCE() macro to 
  102. TCLForceReferences.h and fixed bug that made it impossible to use CLists with new_by_name().
  103.  
  104. • __TCL_DebugCStr function restored to Exceptions.cp so BRLib links when
  105. compiled with BR_DEBUG.
  106.  
  107. • CArrayIterator no longer collaborates with CArray, greatly reducing
  108. overhead of creating iterators and making it sensible to use
  109. an iterator inside CCollaborator.
  110.  
  111. • CCollaborator now uses iterators rather than DoForEach loops, allowing
  112. collaborators to go away when they receive broadcasts.
  113.  
  114. Fixed in 2.0.1
  115. ==============
  116. • All references to gLastError removed from TCL.
  117.  
  118. • Made CStream compile with any double size by adding conditional behavior
  119. to PutFloat()/GetFloat() on mc68881 and undocumented __DOUBLE_8__ macros.
  120.  
  121. • Made alignment tests in CException.cp conditional on non-byte alignment.
  122. HOWEVER, TCL still requires at least word alignment or exceptions don't
  123. work.
  124.  
  125. • Variables set in try blocks and used in catch blocks or thereafter have
  126. been made volatile or variable initialization moved out of try blocks
  127. so catch blocks correctly use/delete storage.
  128.  
  129. • Added TCL_ZERO_OBJECTS macro which defines the value to which new objects
  130. are initialized. Default is 0. If TCL_ZERO_OBJECTS is not defined in
  131. TCLHeaders, objects are served raw.
  132.  
  133. • Several catch_all_() blocks were missing throw_same_().
  134.  
  135. • Added try/catch to CWindow::Update and CBartender::UpdateMenus to keep exceptions
  136. from causing display loops and disabling menus.
  137.  
  138. • Exceptions no longer abort when a try/catch block is executed in a catch
  139. block.
  140.  
  141. • CApplication::GrowMemory now frees only enough rainy day memory to satisfy
  142. requests, so non-critical or can-fail allocations can't get into fund.
  143.  
  144. • CApplication::DoIdle() no longer ignores current rainyDay size when trying to
  145. replenish the fund.
  146.  
  147. • Process monitor demo no longer tries to delete list items in a DoForEach loop. Uses an iterator, instead.
  148.  
  149. • Added __MMPrimitiveAllocate global so TCL can sense when an allocation request
  150. is made on behalf of an external memory manager. Prevents "deadlock" caused by
  151. memory manager stealing from rainy day fund.
  152.  
  153. • Several alert and string resources are preloaded to increase likelihood that
  154. out-of-memory warnings are seen when memory is low.
  155.  
  156. • Added Pascal string constructors and other functions to CString.
  157.  
  158. • In CPictureButton, needsUpdate is now initialized.
  159.  
  160.